﻿using SupportLayer.Constantes;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Linq;

namespace MadearteNovo.Administracao.Pages
{
    public partial class Usuários : System.Web.UI.Page
    {
        UserControl.MensagensErro msgErro;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CarregaXML();
                CarregaUsuarios();
            }
        }

        private void CarregaXML()
        {
            string caminho = Server.MapPath("/Administracao/Pages/Login.xml");

            if (!File.Exists(caminho))
            {
                XmlDocument doc = new XmlDocument();
                XmlNode raiz = doc.CreateElement("login");
                doc.AppendChild(raiz);
                doc.Save(caminho);
            }
        }

        private void CarregaUsuarios()
        {
            XmlDocument doc = new XmlDocument();

            string caminho = Server.MapPath("/Administracao/Pages/Login.xml");

            doc.Load(caminho);

            foreach (XmlNode no in doc.DocumentElement.ChildNodes)
            {
                string id = no.ChildNodes.Item(0).InnerText;
                string nome = no.ChildNodes.Item(1).InnerText;
                ddlUsuarios.Items.Add(new ListItem() { Value = id, Text = nome });
            }

        }

        protected void btnAdicionar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtNome.Text == "")
                    throw new ApplicationException("Digite o NOME!");
                if (txtLogin.Text == "")
                    throw new ApplicationException("Digite o LOGIN do usuário!");
                if (txtSenha.Text == "")
                    throw new ApplicationException("Digite a SENHA!");
                if (txtConfirmaSenha.Text == "")
                    throw new ApplicationException("Confirme a SENHA!");
                if (txtSenha.Text != txtConfirmaSenha.Text)
                    throw new ApplicationException("Confirme a SENHA novamente!");

                XmlDocument doc = new XmlDocument();

                string caminho = Server.MapPath("/Administracao/Pages/Login.xml");

                doc.Load(caminho);

                string idtext = "";
                int contador = 0;
                int cont = 0;

                foreach (XmlNode no in doc.DocumentElement.ChildNodes)
                {
                    idtext = no.ChildNodes.Item(0).LastChild.InnerText;
                }

                cont = Convert.ToInt32(idtext); // Ultimo ID + 1, converter para inteiro
                contador = ++cont;

                XmlNode linha = doc.CreateElement("login");

                XmlNode Id = doc.CreateElement("id");
                XmlNode Nome = doc.CreateElement("nome");
                XmlNode Usuario = doc.CreateElement("usuario");
                XmlNode Senha = doc.CreateElement("senha");

                Id.InnerText = contador.ToString();
                Nome.InnerText = txtNome.Text;
                Usuario.InnerText = txtLogin.Text;
                Senha.InnerText = Util.Criptografia.Encriptar(OUTROS.CHAVE, OUTROS.VETOR, txtSenha.Text.ToString());

                linha.AppendChild(Id);
                linha.AppendChild(Nome);
                linha.AppendChild(Usuario);
                linha.AppendChild(Senha);

                doc.SelectSingleNode("/users").AppendChild(linha);

                doc.Save(caminho);

                ddlUsuarios.Items.Clear();
                CarregaUsuarios();
                ddlUsuarios.ClearSelection();
                ddlUsuarios.Items.FindByValue(Id.InnerText.ToString()).Selected = true;

                txtNome.Text = "";
                txtLogin.Text = "";
                txtSenha.Text = "";
                txtConfirmaSenha.Text = "";
            }
            catch (Exception ex)
            {
                msgErro = (UserControl.MensagensErro)LoadControl("/UserControl/MensagensErro.ascx");
                msgErro.Erro = ex.Message;
                placeholder.Controls.Add(msgErro);
            }
        }

        protected void btnExcluirUser_Click(object sender, EventArgs e)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                int idSelecionado = Convert.ToInt32(ddlUsuarios.SelectedItem.Value);

                string caminho = Server.MapPath("/Administracao/Pages/Login.xml");

                doc.Load(caminho);

                foreach (XmlNode no in doc.DocumentElement.ChildNodes)
                {
                    if (int.Parse(no.ChildNodes.Item(0).InnerText) == idSelecionado) //InnerText = ID do usuário? Pegar o value do ddl selecionado. 
                    {
                        doc.DocumentElement.RemoveChild(no);
                        doc.Save(caminho);
                        Response.Redirect("Usuários.aspx");
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                msgErro = (UserControl.MensagensErro)LoadControl("/UserControl/MensagensErro.ascx");
                msgErro.Erro = ex.Message;
                placeholder.Controls.Add(msgErro);
            }
        }

        protected void btnAddUser_Click(object sender, EventArgs e)
        {
            txtNome.Text = "";
            txtLogin.Text = "";
            txtSenha.Text = "";
            txtConfirmaSenha.Text = "";
        }
    }
}